// ------------------------------------
//    Utilitaires
// ------------------------------------


function in_array (needle, haystack, argStrict) {

    var key = '', strict = !!argStrict;
 
    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;
            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {
                return true;
            }
        }
    }
 
    return false;
}


function str_replace (search, replace, subject, count) {
    // Replaces all occurrences of search in haystack with replace  
    // 
    // version: 1006.1915
    // discuss at: http://phpjs.org/functions/str_replace    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Gabriel Paderni
    // +   improved by: Philip Peterson
    // +   improved by: Simon Willison (http://simonwillison.net)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)    // +   bugfixed by: Anton Ongson
    // +      input by: Onno Marsman
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    tweaked by: Onno Marsman
    // +      input by: Brett Zamir (http://brett-zamir.me)    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   input by: Oleg Eremeev
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Oleg Eremeev
    // %          note 1: The count parameter must be passed as a string in order    // %          note 1:  to find a global variable in which the result will be given
    // *     example 1: str_replace(' ', '.', 'Kevin van Zonneveld');
    // *     returns 1: 'Kevin.van.Zonneveld'
    // *     example 2: str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars');
    // *     returns 2: 'hemmo, mars'    var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
            f = [].concat(search),
            r = [].concat(replace),
            s = subject,
            ra = r instanceof Array, sa = s instanceof Array;    s = [].concat(s);
    if (count) {
        this.window[count] = 0;
    }
     for (i=0, sl=s.length; i < sl; i++) {
        if (s[i] === '') {
            continue;
        }
        for (j=0, fl=f.length; j < fl; j++) {            temp = s[i]+'';
            repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
            s[i] = (temp).split(f[j]).join(repl);
            if (count && s[i] !== temp) {
                this.window[count] += (temp.length-s[i].length)/f[j].length;}        }
    }
    return sa ? s : s[0];
}

function trim (str)
{
	return str.replace(/^\s+/g,'').replace(/\s+$/g,'');
} 

function cpLang() {}


function clicpage() {
	
	this.msg = new cpLang();
	
	// ------------------------------------
	//    Utilitaires
	// ------------------------------------
	
	this.creerURL = function(str)
	{
		
		var accentsE = new RegExp('[éèêë]', 'g');
		var accentsA = new RegExp('[àâ]', 'g');
		var accentsI = new RegExp('[îï]');
		var accentsC = new RegExp('[ç]', 'g');
		var accentsO = new RegExp('[ô]', 'g');
		var espace = new RegExp('[ ,]+', 'g');
		var caracteresRefusesURL = new RegExp('[^A-Za-z0-9@._-]+','g');
		
		return str.toLowerCase().replace(accentsE, 'e').replace(accentsA, 'a').replace(accentsI, 'i').replace(accentsC, 'c').replace(accentsO, 'o').replace(espace, '-').replace(caracteresRefusesURL, '');
		
	};
	
	
	// ------------------------------------
	//    Ajax
	// ------------------------------------
	
	this.ajaxService = function(data, callback, callbackErreur)
	{
		callback = callback || function(reponse) {};
		callbackErreur = callbackErreur || this.callbackErreur;
		
		if(typeof(data[0]) == 'object') {
			data[data.length] = {
				name:'cpAjaxNonce',
				value:cpNonce
			};
		} else {
			data.cpAjaxNonce = cpNonce;
		}
		
		// TODO: Message "Chargement en cours" en bas de l'écran
		
		$.post('services.php', data, function(reponse) {
			
			if($('erreur', reponse).text() == '0') {
				callback(reponse);
			} else {
				callbackErreur(reponse);
			}
			
		});
		
	};
	
	this.callbackErreur = function(reponse)
	{
		// Erreur
		alert(cp.msg.erreur+$('message', reponse).text());
	};
	
	// ------------------------------------
	//    Messages
	// ------------------------------------
	
	this.messageOK = function(message)
	{
		$('#conteneurMessage').html('<div class="msg msgOk" style="background-color:white;">'+message+'</div>').
			find('div').animate({ backgroundColor:'#85D985'}, 1000);
	};
	
	this.messageErreur = function(message, dest)
	{
		dest = dest || $('#conteneurMessage');
		
		dest.html('<div class="msg msgErreurGenerale" style="background-color:white;">'+message+'</div>').
			find('div').animate({ backgroundColor:'#ED7A77'}, 1000);
	};
	
	// ------------------------------------
	//    Sélecteur de page
	// ------------------------------------
	
	this.destSelecteur_titre = $('');
	this.destSelecteur_id = $('');
	
	this.initSelecteurPage = function(lien,destID,destTitre,appendURL)
	{
		
		appendURL = appendURL || '';
		
		var page_id_defaut = $(destID).val();
		if(!(page_id_defaut == '0' || page_id_defaut == '')) {
			cp.ajaxService({
				action: 'cp-pages-getPages',
				page_id: page_id_defaut
			}, function(reponse) {
				if($('page_id', reponse).text() == '') {
					$(destID).val('0');
					$(destTitre).html(cp.msg.selecteur_pas_selection);
				} else {
					$(destID).val($('page_id', reponse).text());
					$(destTitre).html($('page_titre', reponse).text());
				}
			}, function(reponse) {
				$(destID).val('0');
				$(destTitre).html(cp.msg.selecteur_pas_selection);				
			});
		}
		
		$(lien).click(function() {
			cp.destSelecteur_titre = destTitre;
			cp.destSelecteur_id = destID;
			selecteurPage = window.open('index.php?module=selecteurPage&init=1'+appendURL, 'selecteurPage', config='height=570,width=655,left=50,top=50,toolbar=no,menubar=no');
			selecteurPage.focus();
			return false;
		});
		
	};
	
	this.returnSelecteurPage = function(page_id, page_titre)
	{
		$(cp.destSelecteur_titre).html(page_titre);
		$(cp.destSelecteur_id).val(page_id).change();
		return false;
	};
	
	
	// ------------------------------------
	//    Sélecteur d'utilisateur
	// ------------------------------------
	
	this.destSelecteurUtilisateur_pseudo = $('');
	this.destSelecteurUtilisateur_id = $('');
	
	this.initSelecteurUtilisateur = function(lien,destID,destPseudo)
	{
		var utilisateur_id_defaut = $(destID).val();
		if(!(utilisateur_id_defaut == '0' || utilisateur_id_defaut == '')) {
			cp.ajaxService({
				action: 'cp-utilisateurs-getUtilisateurs',
				utilisateur_id: utilisateur_id_defaut
			}, function(reponse) {
				if($('utilisateur_id', reponse).text() == '') {
					$(destID).val('0');
					$(destPseudo).html(cp.msg.selecteur_pas_selection);
				} else {
					$(destID).val($('utilisateur_id', reponse).text());
					$(destPseudo).html($('utilisateur_pseudo', reponse).text());
				}
			}, function(reponse) {
				$(destID).val('0');
				$(destPseudo).html(cp.msg.selecteur_pas_selection);				
			});
		}
		
		$(lien).click(function() {
			cp.destSelecteurUtilisateur_pseudo = destPseudo;
			cp.destSelecteurUtilisateur_id = destID;
			selecteurUtilisateur = window.open('index.php?module=selecteurUtilisateur', 'selecteurUtilisateur', config='height=570,width=655,left=50,top=50,toolbar=no,menubar=no');
			selecteurUtilisateur.focus();
			return false;
		});
		
	};
	
	this.returnSelecteurUtilisateur = function(utilisateur_id, utilisateur_pseudo)
	{
		$(cp.destSelecteurUtilisateur_pseudo).html(utilisateur_pseudo);
		$(cp.destSelecteurUtilisateur_id).val(utilisateur_id).change();
		return false;
	};
	
	
	// ------------------------------------
	//    Sélecteur de média
	// ------------------------------------
	
	this.destSelecteurMedia_fichier = $('');
	this.destSelecteurMedia_id = $('');
	
	this.initSelecteurMedia = function(lien,destID,destFichier)
	{
		var media_id_defaut = $(destID).val();
		if(!(media_id_defaut == '0' || media_id_defaut == '')) {
			cp.ajaxService({
				action: 'cp-medias-getMedia',
				media_id: media_id_defaut
			}, function(reponse) {
				if($('media_id', reponse).text() == '0') {
					$(destID).val('0');
					$(destFichier).html(cp.msg.selecteur_pas_selection);
				} else {
					$(destID).val($('media_id', reponse).text());
					$(destFichier).html($('media_fichier', reponse).text());
				}
			}, function(reponse) {
				$(destID).val('0');
				$(destFichier).html(cp.msg.selecteur_pas_selection);				
			});
		}
		
		$(lien).click(function() {
			cp.destSelecteurMedia_fichier = destFichier;
			cp.destSelecteurMedia_id = destID;
			selecteurMedia = window.open('index.php?module=selecteurMedia', 'selecteurMedia', config='height=570,width=655,left=50,top=50,toolbar=no,menubar=no');
			selecteurMedia.focus();
			return false;
		});
		
	};
	
	this.returnSelecteurMedia = function(media_id, media_fichier)
	{
		$(cp.destSelecteurMedia_fichier).html(media_fichier);
		$(cp.destSelecteurMedia_id).val(media_id).change();
		return false;
	};
	
	// ------------------------------------
	//  Souhaitez-vous réellement quitter cette page?
	// ------------------------------------
	
	this.pageNonEnregistree = false;
	
	this.setPageModifiee = function() {
		this.pageNonEnregistree = true;
	};
	
	this.setPageEnregistree = function() {
		this.pageNonEnregistree = false;
	};
	
	this.activerAvertissementPageNonEnregistree = function() {
		$('input').add('select').add('textarea').change(function() {
			cp.setPageModifiee();
		});
		$('#tag_texte').unbind('change');
	};
	
	// ------------------------------------
	//  Cookies
	// ------------------------------------
	
	this.ecrireCookie = function(nom,valeur,duree)
	{
		var exdate = new Date();
		exdate.setDate(exdate.getDate()+duree);
		document.cookie = nom+'='+escape(valeur)+((duree=null) ? '' : ';expires='+exdate.toUTCString());
	};
	
	this.lireCookie = function(nom)
	{
		if(document.cookie.length>0)
		{
			c_start = document.cookie.indexOf(nom+"=");
			if(c_start != -1)
			{
				c_start = c_start + nom.length+1;
				c_end = document.cookie.indexOf(';', c_start);
				if(c_end=-1) { c_end = document.cookie.length; }
				return unescape(document.cookie.substring(c_start,c_end));
			}
		}
		return null;
	};
	
}


cp = new clicpage();


$(document).ready(function() {
	
	//------------------------------------
	// Cacher le texte de la barre d'outils
	//------------------------------------
	
	$('#toggleMenuGauche').click(function() {
		if($('#gauche').hasClass('gauche_texte')) {
			$('#gauche').attr('class', 'gauche_icones');
			$('#module').attr('class', 'module_icones');
			$('#toggleMenuGauche>img').attr('src', 'images/16/droite.png');
			cp.ecrireCookie('cp_admin_menugauche', '0', 1500);
		} else {
			$('#gauche').attr('class', 'gauche_texte');
			$('#module').attr('class', 'module_texte');
			$('#toggleMenuGauche>img').attr('src', 'images/16/gauche.png');
			cp.ecrireCookie('cp_admin_menugauche', '1', 1500);
		}
		return false;
	});
	
	// ------------------------------------
	//  Souhaitez-vous réellement quitter cette page?
	// ------------------------------------
	
	window.onbeforeunload = function() {
		var cb = cp.onbeforeunload || function() {};
		cb();
		if(cp.pageNonEnregistree == true) {
			return cp.msg.modificationsPerdues;
		}
	};
	
});

// ------------------------------------
//  Effets visuels
// ------------------------------------

$.fn.supprimerAvecEffet = function(callback) {
	
	callback = callback || function() {};
	
	return this.each(function() {
		obj = $(this);
		obj.css("background", "#FF7247").fadeOut("slow", function() { $(this).remove(); callback(); });
	});

};